package dk.ahp.galgelegapp;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Random;

import android.util.Log;

class Galgelogik {
  public ArrayList<String> muligeOrd;
  public ArrayList<String> brugteBogstaver;
  public String ordet;
  public String synligtOrd;
  public int korrekteBogstaver;
  public int forkerteBogstaver;
  public boolean sidsteBogstavVarKorrekt;
  public boolean spilletErVundet;
  public boolean spilletErTabt;
  public String sværhedsgrad;
  public ArrayList<String> ordHentetFraWeb=null;

  void nulstil() {
	  nulstil(null);
  }
  
  void nulstil(String sværhed) {
    muligeOrd = new ArrayList<String>();
    muligeOrd.add("bil");
    muligeOrd.add("computer");
    muligeOrd.add("programmering");
    muligeOrd.add("motorvej");
    muligeOrd.add("busrute");
    muligeOrd.add("gangsti");
    muligeOrd.add("skovsnegl");
    muligeOrd.add("solsort");
    
	  if (null == sværhed || "V2".equals(sværhed) )
	  {
	    Random random = new Random();
	    ordet = muligeOrd.get(random.nextInt(muligeOrd.size()));
	  }
	  else if ("V1".equals(sværhed) ) {
		  ordet = muligeOrd.get(0);
	  } 
	  else if ("V3".equals(sværhed)) {
		  if(null != muligeOrd & muligeOrd.size() > 0)
		  {
			  Log.d("Galgelogik", "bruger ord fra GalgeApplicaton");
		  		Random random = new Random();
		  		ordet = muligeOrd.get(random.nextInt(muligeOrd.size()));
		  } 
		  else {
			  Log.e("Galgelogik", "No word found on web");
			  ordet = "virkerikke";
		  }
	  } 
	  else if ("V0".equals(sværhed)) {
		  ordet = "spasser";
	  }
	  
    brugteBogstaver = new ArrayList<String>();
    forkerteBogstaver = 0;
    spilletErVundet = false;
    spilletErTabt = false;

    opdaterSynligtOrd();
  }

  public void opdaterSynligtOrd() {
    synligtOrd = "";
    spilletErVundet = true;
    for (int n=0; n<ordet.length(); n++) {
      String bogstav = ordet.substring(n, n+1);
      if (brugteBogstaver.contains(bogstav)) {
        synligtOrd = synligtOrd + bogstav;
      } else {
        synligtOrd = synligtOrd + "*";
        spilletErVundet = false;
      }
    }
  }

  void gaetBogstav(String bogstav) {
    if (bogstav.length()!=1) return;
    if (brugteBogstaver.contains(bogstav)) return;
    if (spilletErVundet || spilletErTabt) return;

    brugteBogstaver.add(bogstav);

    if (ordet.contains(bogstav)) {
      sidsteBogstavVarKorrekt = true;
      System.out.println("Bogstavet var korrekt: "+bogstav);
    }  else {
      // Vi gaettede paa et bogstav der ikke var i ordet.
      sidsteBogstavVarKorrekt = false;
      System.out.println("Bogstavet var IKKE korrekt: "+bogstav);
      forkerteBogstaver = forkerteBogstaver + 1;
      if (forkerteBogstaver>6) {
        spilletErTabt = true;
      }
    }
    opdaterSynligtOrd();
  }

  boolean SpilletSlut()
  {
	  return spilletErVundet || spilletErTabt;
  }
  
  int GætTilbage()
  {
	  return 6 - forkerteBogstaver;
  }
  
  void logStatus() {
    System.out.println(" --------- ");
    if (spilletErTabt) System.out.println("SPILLET ER TABT");
    if (spilletErVundet) System.out.println("SPILLET ER VUNDET");
    System.out.println("ordet = "+ordet);
    System.out.println("synligtOrd = "+synligtOrd);
    System.out.println("forkerteBogstaver = "+forkerteBogstaver);
    System.out.println("brugeBogstaver = "+brugteBogstaver);
    System.out.println(" --------- ");
  }

}
